iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0
自我挑戰組

純新手學習 JavaScript系列 第 24

新手學習JavaScript:day24 - Contains Duplicate

  • 分享至 

  • xImage
  •  

一樣讓我們直接來看題目吧:

/*Given an array of integers, find if the array contains any duplicates.

Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

Example 1:

Input: [1,2,3,1]
Output: true
Example 2:

Input: [1,2,3,4]
Output: false
Example 3:

Input: [1,1,1,3,3,4,3,2,4,2]
Output: true
*/
var containsDuplicate = function(nums) {
    let count ={}
  for(let num in nums){
    count[nums[num]] ? count[nums[num]]++ : count[nums[num]] = 1
    if(count[nums[num]]>1) return true
  }
    return false
};

今天的挑戰,一開始會給一個數字陣列,如果這個陣列裡包含有重複的數字就回傳true,如果沒有就回傳false,那就讓我們直接進入思考部分吧:

思考一:

  1. 一開始我們可以宣告一個變數,來記錄。然後對陣列跑迴圈,先取得當次回圈的數值,然後去看剩下的數字中有沒有一樣的數值,如果有就停止迴圈。如果說陣列長度小於1,直接回傳false。
var containsDuplicate = function(nums) {
  if(nums.length>1){
    let result
    for(let i = 0; i < nums.length - 1; i++){
      let rest = nums.slice(i+1)
      result = rest.indexOf(nums[i]) !== -1
      if(result) break
    }
    return result
  }else{
    return false
  }
};

思考二:

1.我們先宣告一個空物件,為了之後來計算每一次迴圈值的次數,並在每一次迴圈去檢查當下的值有沒有出現超過兩次,有的話直接回傳true,沒有最後return false。

var containsDuplicate = function(nums) {
    let count ={}
  for(let i in nums){
    count[nums[i]] ? count[nums[i]]++ : count[nums[i]] = 1
    if(count[nums[i]]>1) return true
  }
    return false
};

以上是今天的刷題挑戰。如果有哪位大大路過經過,還請多多分享與賜教。


上一篇
新手學習JavaScript:day23 - Best Time to Buy and Sell Stock
下一篇
新手學習JavaScript:day25 - Partition Array Into Three Parts With Equal Sum
系列文
純新手學習 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言